package cineplanet.modelo;

import java.io.Serializable;
import javax.persistence.*;

import java.util.Date;

/**
 * The persistent class for the tarjeta database table.
 * 
 */
@Entity
@Table(name = "tarjeta")
@NamedQueries({
		@NamedQuery(name = "Tarjeta.findAll", query = "SELECT ta FROM Tarjeta ta"),
		@NamedQuery(name = "Tarjeta.findByIdTarjeta", query = "SELECT ta FROM Tarjeta ta WHERE ta.idTarjeta = :idTarjeta"),
		@NamedQuery(name = "Tarjeta.findByEstado", query = "SELECT ta FROM Tarjeta ta WHERE ta.estado = :estado"),
		@NamedQuery(name = "Tarjeta.findByFechaCaducidad", query = "SELECT ta FROM Tarjeta ta WHERE ta.fechaCaducidad = :fechaCaducidad"),
		@NamedQuery(name = "Tarjeta.findByFechaEmision", query = "SELECT ta FROM Tarjeta ta WHERE ta.fechaEmision = :fechaEmision"),
		@NamedQuery(name = "Tarjeta.findBySerieTarjeta", query = "SELECT ta FROM Tarjeta ta WHERE ta.serieTarjeta = :serieTarjeta")

})
public class Tarjeta implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Basic(optional = false)
	@Column(name = "idTarjeta")
	private Integer idTarjeta;
	@Column(name = "estado")
	private byte estado;
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "fechaCaducidad")
	private Date fechaCaducidad;
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "fechaEmision")
	private Date fechaEmision;
	@Column(name = "serieTarjeta")
	private int serieTarjeta;

	// bi-directional many-to-one association to Usuario
//	@ManyToOne
//	@JoinColumn(name = "idUsuario")
	@JoinColumn(name = "idUsuario", referencedColumnName = "idUsuario")
    @ManyToOne(optional = false)
	private Usuario idUsuario;

	public Tarjeta() {
	}

	public int getIdTarjeta() {
		return this.idTarjeta;
	}

	public void setIdTarjeta(int idTarjeta) {
		this.idTarjeta = idTarjeta;
	}

	public byte getEstado() {
		return this.estado;
	}

	public void setEstado(byte estado) {
		this.estado = estado;
	}

	public Date getFechaCaducidad() {
		return this.fechaCaducidad;
	}

	public void setFechaCaducidad(Date fechaCaducidad) {
		this.fechaCaducidad = fechaCaducidad;
	}

	public Date getFechaEmision() {
		return this.fechaEmision;
	}

	public void setFechaEmision(Date fechaEmision) {
		this.fechaEmision = fechaEmision;
	}

	public int getSerieTarjeta() {
		return this.serieTarjeta;
	}

	public void setSerieTarjeta(int serieTarjeta) {
		this.serieTarjeta = serieTarjeta;
	}

	public void setIdUsuario(Usuario idUsuario) {
		this.idUsuario = idUsuario;
	}

	public Usuario getIdUsuario() {
		return idUsuario;
	}
	@Override
    public int hashCode() {
        int hash = 0;
        hash += (idTarjeta != null ? idTarjeta.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Tarjeta)) {
            return false;
        }
        Tarjeta other = (Tarjeta) object;
        if ((this.idTarjeta == null && other.idTarjeta != null) || (this.idTarjeta != null && !this.idTarjeta.equals(other.idTarjeta))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "cineplanet.modelo.Tarjeta[idTarjeta=" + idTarjeta + "]";
    }
}